#include<iostream>
#include<queue>
#include<cstring> 

using namespace std;

const int N=500;
typedef pair<int,int> PII;

int a[N][N],d[N][N];
bool st[N][N];
int dx[]={-1,-2,-2,-1,1,2,2,1};
int dy[]={-2,-1,1,2,2,1,-1,-2};
int n,m,x,y,p=0,z=-1;

queue<PII> q;

void bfs(int sx,int sy)
{
	q.push({sx,sy});
	st[sx][sy]=1;
	while(!q.empty())
	{
		PII t=q.front();
		q.pop();
		for(int i=0;i<8;i++)
		{
			int x=t.first+dx[i];
			int y=t.second+dy[i];
			if(st[x][y]) continue;
			if(x<1 || x>n || y<1 || y>m) continue;
			d[x][y]=d[t.first][t.second]+1;
			st[x][y]=1;
			q.push({x,y});
		}
	}
}

int main()
{
	memset(d,0,sizeof d);
	cin>>n>>m>>x>>y;
	bfs(x,y);
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			if(i==x && j==y) printf("%-5d",p);
			else
			{
				if(d[i][j]==0) printf("%-5d",z);
				else printf("%-5d",d[i][j]);
			}
		}
		cout<<endl;
	}
	return 0;
}
